package cn.tedu.flower.manage.content.dao.persist.repository;

import cn.tedu.flower.manage.common.pojo.vo.PageData;
import cn.tedu.flower.manage.content.pojo.entity.Aftermarket;

import cn.tedu.flower.manage.content.pojo.vo.AftermarketListItemVO;
import cn.tedu.flower.manage.content.pojo.vo.AftermarketStandardVO;
import cn.tedu.flower.manage.content.pojo.vo.CategoryListItemVO;
import cn.tedu.flower.manage.content.pojo.vo.CategoryStandardVO;

import java.util.Collection;
import java.util.List;


/**
 * 处理售后数据的存储库接口
 *
 * @author java@tedu.cn
 * @version 1.0
 */
public interface IAftermarketRepository {

    /**
     * 插入类别数据
     *
     * @param aftermarket 售后数据
     * @return 受影响的行数
     */
    int insert(Aftermarket aftermarket);

    /**
     * 批量插入类别数据
     *
     * @param aftermarketList 售后列表
     * @return 受影响的行数
     */
    int insertBatch(List<Aftermarket> aftermarketList);

    /**
     * 根据id删除售后数据
     *
     * @param id 售后ID
     * @return 受影响的行数
     */
    int deleteById(Long id);

    /**
     * 根据若干个ID批量删除售后数据
     *
     * @param idList 若干个售后ID的数组
     * @return 受影响的行数
     */
    int deleteByIds(Collection<Long> idList);

    /**
     * 根据id修改售后数据
     *
     * @param aftermarket 封装了售后ID和新数据的对象
     * @return 受影响的行数
     */
    int update(Aftermarket aftermarket);

    /**
     * 统计售后表中的数据的数量
     *
     * @return 售后表中的数据的数量
     */
    int count();

    /**
     * 根据售后名称统计当前表中售后数据的数量
     *
     * @param nickname 售后名称
     * @return 当前表中匹配名称的售后数据的数量
     */
    int countByName(String nickname);

    /**
     * 根据id查询售后数据详情
     *
     * @param id 类别ID
     * @return 匹配的售后数据详情，如果没有匹配的数据，则返回null
     */
    AftermarketStandardVO getStandardById(Long id);

    /**
     * 查询售后数据列表
     *
     * @return 售后数据列表
     */
    List<AftermarketListItemVO> list();

    /**
     * 查询类别数据列表
     *
     * @param pageNum  页码
     * @param pageSize 每页记录数
     * @return 售后数据列表
     */
    PageData<AftermarketListItemVO> list(Integer pageNum, Integer pageSize);
}
